home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #1 / Amiga Plus 1995 #1.iso / fish-disketten / fish_941-950 / d949 / bbbbs / bbbbs65.lha / rexx / bbsArcExt.rexx < prev    next >
OS/2 REXX Batch file  |  1993-05-31  |  2KB  |  94 lines

  1. /*        $VER: 5.9 bbsArcExt.rexx 31 May 1993 (31.5.93)
  2.    copyright 1990-93 Richard Lee Stockton FREELY DISTRIBUTABLE
  3.  
  4.  Each archive will be no larger than 800,000 bytes
  5.  All combined, the uncompressed files must be less than SIZE_LIMIT
  6. */
  7. SIZE_LIMIT=5000000
  8.  
  9. LF='0A'x
  10.  
  11. PARSE ARG name selected 
  12. IF selected='' THEN EXIT
  13. bbspath=GETCLIP('BBS_path')
  14. CALL CLOSE(STDOUT)
  15. CALL OPEN(STDOUT,'RAM:ArcExt.STDOUT','W')
  16.  
  17. bytes=0
  18. tbytes=0
  19. s.=''
  20. s.0=1
  21. lasti=0
  22. DO i=1 TO WORDS(selected)
  23.   info=STATEF(WORD(selected,i))
  24.   IF info='' THEN ITERATE i
  25.   bytes=bytes+WORD(info,2)
  26.   tbytes=tbytes+WORD(info,2)
  27.   IF tbytes>SIZE_LIMIT THEN LEAVE i
  28.   IF bytes>800000 & (i-lasti)>1 THEN
  29.     DO
  30.       s.0=s.0+1
  31.       bytes=0
  32.       lasti=i
  33.     END
  34.   n=s.0
  35.   s.n=STRIP(s.n WORD(selected,i))
  36. END
  37.  
  38. fdir=bbspath'EmailFiles/'name
  39. CALL MAKEDIR(fdir)
  40.  
  41. x=OPEN(f,bbspath'Numbers/LastMail','R')
  42. IF x=0 THEN EXIT 25
  43. lastm=READLN(f)
  44. CALL CLOSE(f)
  45. IF DATATYPE(lastm,'W') THEN lastm=lastm+1
  46. ELSE lastm=1
  47.  
  48. DO i=1 TO s.0
  49.   ADDRESS COMMAND 'ECHO >'bbspath'Numbers/LastMail 'lastm
  50.   x=OPEN(f,'RAM:ArcList','W')
  51.   IF x=0 THEN EXIT 26
  52.   CALL WRITELN(f,s.i) /* list in a file can be of unlimited length */
  53.   CALL CLOSE(f)
  54.   OPTIONS FAILAT 999
  55.   comm='LhA -2amNr a' fdir'/BBBBS_'lastm'.lha @RAM:ArcList'
  56.   ADDRESS COMMAND comm
  57.   temp=WORD(s.i,WORDS(s.i))
  58.   dev=LEFT(temp,POS(':',temp))
  59.   CALL PRAGMA('D',dev)
  60.   temp=PRAGMA('D')
  61.   dev=SPACE(LEFT(temp,POS(':',temp)-1),1,'_')
  62.   x=OPEN(f,fdir'/BBBBS_'lastm'.lha.xdl','W')
  63.   IF x=0 THEN EXIT 27
  64.   CALL WRITELN(f,dev)
  65.   CALL WRITELN(f,WORDS(s.i))
  66.   CALL CLOSE(f)
  67.   x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  68.   IF x=0 THEN EXIT 28
  69.   CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm'.lha')
  70.   CALL WRITELN(f,' From: BBBBS')
  71.   CALL WRITELN(f,'   To: 'name)
  72.   temp=' Subj: Archive of selected external device files'
  73.   IF s.0>1 THEN temp=temp', part' i 'of' s.0'.'
  74.   CALL WRITELN(f,temp)
  75.   CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  76.   CALL WRITELN(f,LEFT('=',75,'='))
  77.   CALL WRITELN(f,'Here is the archive of files you requested.')
  78.   DO j=1 TO WORDS(s.i)
  79.     CALL WRITELN(f,WORD(s.i,j))
  80.   END
  81.   CALL CLOSE(f)
  82.   lastm=lastm+1
  83. END
  84.  
  85. IF GETCLIP('BBS_level')~='' & WORD(GETCLIP('BBS_lastcaller'),1)=name THEN
  86.   DO
  87.     oldmess=GETCLIP('BBS_MESSAGE')
  88.     IF oldmess~='' THEN oldmess=oldmess||'0D0A'x
  89.     newmess='Your file archive is waiting in Email.'
  90.     CALL SETCLIP('BBS_MESSAGE',oldmess||newmess)
  91.   END
  92.  
  93. /* bbsArcExt.rexx */
  94.